unit PesquisaRomaneio;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UFormPesquisa, DB, DBTables, StdCtrls, Grids, DBGrids, Buttons,
  ExtCtrls, CheckLst, Mask, ToolEdit, DBCtrls;

type
  TFPesquisaRomaneio = class(TFormPesquisa)
    Label2: TLabel;
    DBLCBCliente: TDBLookupComboBox;
    CkBTodasEmpresas: TCheckBox;
    Label10: TLabel;
    CLBEmpresas: TCheckListBox;
    DSCliente: TDataSource;
    Label1: TLabel;
    ERomaneioIni: TEdit;
    ERomaneioFim: TEdit;
    Label3: TLabel;
    RGSituacaoRomaneio: TRadioGroup;
    Label5: TLabel;
    EPedido: TEdit;
    Label9: TLabel;
    Label6: TLabel;
    DEDataIni: TDateEdit;
    DEDataFim: TDateEdit;
    procedure BtnImprimirClick(Sender: TObject);
    procedure BtnConsultarClick(Sender: TObject);
    procedure CkBTodasEmpresasClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BtnLimparClick(Sender: TObject);
    procedure DBLCBClienteKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BtnSelecionarClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FPesquisaRomaneio: TFPesquisaRomaneio;
  S :String;

implementation

uses UGeral,UDmGestao,Romaneio, RelatorioRomaneio, UFormRelatorio;

{$R *.dfm}

procedure TFPesquisaRomaneio.BtnImprimirClick(Sender: TObject);
begin
  inherited;
 DSPesquisa.Enabled:=false;
 Application.CreateForm(TFRelatorioRomaneio, FRelatorioRomaneio);
 with FRelatorioRomaneio do
  begin
   QRLNomeRelatorio.Caption:='ROMANEIO';
   QRLData.Caption:=DEDataIni.Text + ' a ' + DEDataFim.Text;
   QuickRep1.DataSet:=QPesquisa;
   QRShLinhaInferiror.Width:=0;
   QRShLinhaSuperiror.Width:=0;
   QuickRep1.Prepare;
   QuickRep1.Preview;
   close;
  end; // With
 DSPesquisa.Enabled:=True;
end;

procedure TFPesquisaRomaneio.BtnConsultarClick(Sender: TObject);
begin
 if (EmpresasDesmarcadas(CLBEmpresas) = CLBEmpresas.Items.Count) then
  CkBTodasEmpresasClick(Sender);
 S:=Concatenaempresas(CLBEmpresas);

 QPesquisa.close;
 QPesquisa.SQL.Clear;
 QPesquisa.SQL.Add('Select ROM_CODIGO,ROM_DATA,Rom_Situacao,Cli_Razao,ITENSROM_Codigo,ITENSROM_Pedido,ITENSROM_ItemPedido,ITENSROM_QUANTIDADE,ITENSROM_ENCERRAITEMPEDIDO,Prod_Codigo,Prod_DescricaoSai,Prod_Tipo,ITENSPED_DESCRICAOSERVICO,Loc_descricao ');
 QPesquisa.SQL.Add('From Cliente Inner Join (Romaneio Left join(local Right join (ITENSROMANEIO Inner join (Produto Inner Join ItensPedidoVenda on ITENSROM_ItemPedido = ItensPed_Codigo) on ItensPed_Produto = Prod_Codigo ) on ITENSROM_Local = Loc_codigo) ');
 QPesquisa.SQL.Add('on Rom_Codigo = ItensRom_Romaneio)on ROM_CLIENTE = Cli_Codigo ');
 QPesquisa.SQL.Add(' Where (CodigoEmpresa in ( ' + s + ') )');

 if (ERomaneioIni.Text <> '')  and (ERomaneioFim.Text <> '' ) then
  begin
   QPesquisa.SQL.Add(' And (Rom_Codigo between :RomI and :RomF) ');
   QPesquisa.ParamByName('RomI').AsString:=ERomaneioIni.Text;
   QPesquisa.ParamByName('RomF').AsString:=ERomaneioFim.Text;
  end;

 if (EPedido.Text <> '' ) then
  begin
   QPesquisa.SQL.Add(' And (ITENSROM_PEDIDO = :Ped) ');
   QPesquisa.ParamByName('Ped').AsString:=EPedido.Text;
  end;

 if (DEDataIni.Date <> 0) and (DEDataFim.Date <> 0) then
  begin
   QPesquisa.SQL.Add(' and (Rom_Data  between :DataI and :DataF ) ');
   QPesquisa.ParamByName('DataI').AsDate:=DEDataIni.Date;
   QPesquisa.ParamByName('DataF').AsDate:=DEDataFim.Date;
  end;

 if DBLCBCliente.Text <> '' then
  begin
   QPesquisa.SQL.Add(' And (Rom_Cliente = :Cli)');
   QPesquisa.ParamByName('Cli').AsInteger:= DBLCBCliente.KeyValue;
  end;

 if RGSituacaoRomaneio.ItemIndex <> 3 then
  begin
   QPesquisa.SQL.Add(' And (Rom_Situacao = :SitRom)');
   QPesquisa.ParamByName('SitRom').AsInteger:=RGSituacaoRomaneio.ItemIndex;
  end;
 QPesquisa.SQL.Add('Group By ROM_CODIGO,ROM_DATA,Rom_Situacao,Cli_Razao,Loc_descricao,ITENSROM_Codigo,ITENSROM_Pedido,ITENSROM_ItemPedido,ITENSROM_QUANTIDADE,ITENSROM_ENCERRAITEMPEDIDO,Prod_Codigo,Prod_DescricaoSai,Prod_Tipo,ITENSPED_DESCRICAOSERVICO');
 QPesquisa.Open;
 inherited;

end;

procedure TFPesquisaRomaneio.CkBTodasEmpresasClick(Sender: TObject);
Var
 i : Integer;
begin
  inherited;
 for i := 0 to CLBEmpresas.Items.Count - 1 do
  begin
   if StrToInt(Copy(CLBEmpresas.Items.Strings[i],1,pos('-',CLBEmpresas.Items.Strings[i])- 1)) = Codigoempresa then
    CLBEmpresas.Checked[i]:=true
   else
    CLBEmpresas.Checked[i]:=CkBTodasEmpresas.Checked;
  end;

end;

procedure TFPesquisaRomaneio.FormCreate(Sender: TObject);
begin
  inherited;
 QPesquisa.Close;
 QPesquisa.SQL.Clear;
 QPesquisa.SQL.Add('Select Emp_Codigo,Emp_Fantasia from empresa');
 QPesquisa.Open;
 QPesquisa.First;
 CLBEmpresas.Items.Clear;
 while not(QPesquisa.Eof) do
 begin
  CLBEmpresas.Items.Add(QPesquisa.fieldByname('Emp_Codigo').AsString + '-' + QPesquisa.fieldByname('Emp_Fantasia').AsString );
  QPesquisa.Next;
 end;
 CkBTodasEmpresasClick(Sender);
 QPesquisa.Close;
end;

procedure TFPesquisaRomaneio.BtnLimparClick(Sender: TObject);
begin
  inherited;
 ERomaneioIni.Text:='';
 ERomaneioFim.Text:='';
 EPedido.Text:='';
 DEDataIni.Date:=0;
 DEDataFim.Date:=0; 
 DBLCBCliente.KeyValue:=null;
 RGSituacaoRomaneio.ItemIndex:=3;
end;

procedure TFPesquisaRomaneio.DBLCBClienteKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
  case key of
  116 : begin //F5
          TDBLookupComboBox(Sender).ListSource.DataSet.Close;
          TDBLookupComboBox(Sender).ListSource.DataSet.Open;
        end ;
 end;
 if key = 46 then
  TDBLookupComboBox(Sender).KeyValue:=null;

end;

procedure TFPesquisaRomaneio.BtnSelecionarClick(Sender: TObject);
begin
  inherited;
 if FRomaneio = nil then
  begin
   Application.CreateForm(TFRomaneio, FRomaneio);
   FRomaneio.show;
  end;
 FRomaneio.QRomaneio.Close;
 FRomaneio.QRomaneio.Open;
 FRomaneio.QRomaneio.Locate('Rom_Codigo',QPesquisa.fieldByname('Rom_Codigo').AsString,[loCaseInsensitive]);
 Self.Close;
end;

procedure TFPesquisaRomaneio.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
 if FRomaneio <> nil then
  begin
   FRomaneio.Enabled:=true;
   FRomaneio.Show;
  end;
 FPesquisaRomaneio:=nil;
 inherited;
end;

end.
